﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace KingerRobot.PCRBW.SpiService;

public class EquipStatusImpl : IEquipStatusService
{
    private readonly static IWcsEquipStatusRepositories _rcsEquipStatus = new WcsEquipStatusRepositories();

    public void PingEquip()
    {
        Expression<Func<POWcsEquipStatus, bool>> whereExpression = x => true;
        
        whereExpression = whereExpression.And(d => d.UseFlag == 1);
       
        var equipList = _rcsEquipStatus.Query(whereExpression);
        if (equipList == null) return;
        foreach (var equip in equipList)
        {
            Ping p1 = new Ping();
            PingReply reply = p1.Send(equip.Ip); //发送主机名或Ip地址

            if (reply.Status == IPStatus.Success)
            {
                equip.Status = 1;
            }
            else
            {
                equip.Status = 0;
                WriteLog($"设备IP：{equip.Ip}ping失败", true);
            }
            Expression<Func<POWcsEquipStatus, bool>> whereEquipStatusExpression = x => true;
            whereEquipStatusExpression = whereEquipStatusExpression.And(d => d.Id == equip.Id);
           
            _rcsEquipStatus.Update(whereEquipStatusExpression,equip);
        };
       
    }
}
